home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / c64 / programming / atbasic.lzh / atbasic / src / SBD 5.3 .S 4,P (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1996-03-04  |  8.6 KB  |  223 lines

  1. 70 dbv ldx flagfc:tya:clc:adc flagfc:tay:sty flagfc
  2. 75 dbv1 lda dbuf,x:sta dbuf,y:dey:dex:bpl dbv1:dbv2 rts
  3. 90 addzei tya:clc:adc zeibas:sta zeibas:bcc az1:inc zeibas+1:az1 rts
  4. 100 getgbyt jsr chrget:jmp getbyt
  5. 103 ;flagfb >b7 =1 > @ nicht erlaubt
  6. 106 ;        b6 =1 > @ muss
  7. 109 ;        b5 =1 > drive muss
  8. 112 ;        b4 =1 > name muss
  9. 115 ;        b3 =1 > befehl 'disk'
  10. 118 ;        b2 =1 > id erlaubt
  11. 121 ;---     b1 =1 > id vorhanden
  12. 124 ;        b0 =x > drive
  13. 127 ea lda diskadr:sta devadr:eb sty flagfb
  14. 130 ldy #0:sty flagfd:sty flagfc:jsr chr(NULL)t
  15. 133 bne w1:jmp tex+2
  16. 136 w1 cmp #34:bne w3a
  17. 139 inc zeibas:bne nx1:inc zeibas+1
  18. 142 nx1 lda (zeibas),y:beq n1a
  19. 145 cmp #34:beq n1a:iny:cpy #20:bcc nx1:jmp strtl
  20. 148 n1a sty flagfd:tya:beq nx3:lda flagfb:ora #16:sta flagfb:dey
  21. 151 and #8:beq nx2:ldy #0:beq nx3aa
  22. 154 nx2 lda (zeibas),y:cmp #":":beq n2a:dey:bpl nx2:iny:beq nx3a+2
  23. 157 n2a iny:sty flagfc:n2b dey:bmi nx3a:lda (zeibas),y:cmp #"@":bne n2b
  24. 160 bit flagfb:bmi nx3a
  25. 163 lda flagfb:ora #64:sta flagfb
  26. 166 nx3a ldy flagfc:nx3aa ldx #0:nx3b cpy flagfd:beq nx3c:lda (zeibas),y
  27. 169 sta dbuf,x:iny:inx:bne nx3b:nx3c stx flagfc
  28. 172 nx3 lda flagfd:jsr addzei+1
  29. 175 w2 jsr chr(NULL)t:beq tex1:jsr chrget
  30. 178 w3 jsr chr(NULL)t:cmp #",":bne tex
  31. 181 jsr chrget:beq tex1:w3a cmp #"d":bne b1
  32. 184 jsr getgbyt:txa:cmp #2:bcs illq:lsr:lda flagfb:and #255-1:bcc *+4
  33. 187 ora #1:ora #32:sta flagfb:bne w3
  34. 190 b1 cmp #"u":bne b2:jsr getgbyt:stx devadr:jmp w3
  35. 193 b2 cmp #"i":bne tex:lda flagfb:and #4:beq synt:ldy #1:ora #6+16:sta flagfb
  36. 194 lda flagfb:ora #6:sta flagfb
  37. 195 ldx flagfc:lda #",":sta dbuf,x:inx:lda (zeibas),y:sta dbuf,x:inx
  38. 196 beq synt:iny:lda (zeibas),y:beq synt:sta dbuf,x:iny:jsr addzei
  39. 199 inx:stx flagfc:bne w3:tex1 beq tex
  40. 205 cmp #16:bcs illq:rts
  41. 208 illq ldx #14:.byt $2c
  42. 211 strtl ldx #23:.byt $2c
  43. 214 synt ldx #11
  44. 217 err =*:erout jmp $a437
  45. 220 tex ldx #0
  46. 223 lda flagfb:and #%01110000:beq end
  47. 226 tay:lda #8:bit flagfb:bne end
  48. 229 tya:and #%01100000:beq end
  49. 232 ldy #2:eor #%01100000:bne tx1:iny:tx1 lda flagfb:and #16
  50. 233 bne tx2:dey:tx2 jsr dbv:ldx #0:lda flagfb:asl:asl:bcc drive
  51. 238 tay:lda #"@":sta dbuf,x:inx:tya:drive asl:bcc name
  52. 239 lda flagfb:and #1:clc:adc #"0":sta dbuf,x:inx
  53. 241 name lda #":":sta dbuf,x
  54. 244 end ldx flagfc:cpx #22:bcs strtl
  55. 265 lda #0:sta dbuf,x
  56. 271 erts rts
  57. 274 s1 ldy #0:jmp synt
  58. 277 e12 ldy #64:.byt $2c:e12l ldy #0:jsr ea:jmp out
  59. 280 e23 ldy #128:jsr ea:jsr chr(NULL)t:cmp #$a4;to
  60. 283 bne s1
  61. 286 ne lda dbuf,x:sta dbuf+22,x:dex:bpl ne
  62. 289 jsr chrget:ldy #128+64:jsr eb:lda #"=":sta dbuf,x
  63. 292 ldy #0:inx:ne2 lda dbuf+22,y:sta dbuf,x:beq out:inx:iny:bne ne2
  64. 295 out txa:ldx #<dbuf:ldy #>dbuf:jmp $ffbd
  65. 600 ;:;******** befehle fuer disk-basic:;
  66. 601 bverify lda #1:.byt $2c
  67. 602 bload   lda #0:sta $0a:jsr e12l
  68. 603 jsr chr(NULL)t:beq bldn:cmp #"p":beq bldn
  69. 604 jsr getint:ldx intadr:ldy intadr+1:lda #0
  70. 614 .byt $2c:bldn lda #1:sta secadr:lda $0a:jsr $ffd5:lda flag0a:beq bl00
  71. 615 jmp $e17e:bvend rts
  72. 617 bl00 lda status:and #$bf:beq bvend
  73. 618 ldx #$1d:blverr jmp $a437
  74. 619 dverify lda #1:.byt $2c
  75. 620 dload lda #0:sta flag0a:jsr e12l:lda #0:sta secadr
  76. 621 jmp $e16f
  77. 622 dsave jsr e12l
  78. 623 ds1 jmp $e159
  79. 625 msave jsr e12l:jsr getint
  80. 627 lda intadr:sta $c1:lda intadr+1:sta $c2:jsr getkint
  81. 629 ldx $14:ldy $15:lda #$c1:jmp $e15f
  82. 650 ;********
  83. 690 catalog pha:lda #3:sta flagfc:pla:cmp #"#":bne catnorm
  84. 692 jsr getgbyt:stx flagfc:jsr chr(NULL)t:beq catnorm:jsr prkomma
  85. 694 catnorm lda flagfc:pha:jsr e12:jsr clrch
  86. 695 pla:sta flagfc:lda #$60:sta secadr:lda #"$":ldy #0:sta ($bb),y
  87. 696 lda devadr:sta flagfe:jsr $f3d5:lda status:bne e09o:lda #14
  88. 698 ldx flagfc:ldy #0:sty lenfnam:jsr $ffba:jsr open
  89. 730 ldy #4:e10 jsr casetdev:e10a sty flagff
  90. 740 jsr iecin:ldy status:bne e09i
  91. 750 ldy flagff:dey:bne e10a
  92. 760 jsr iecin:sta intadr:jsr iecin:pha:jsr untalk:jsr catckout
  93. 765 lda #" ":jsr bsout:pla:ldx intadr:jsr adrout
  94. 770 lda #" ":jsr bsout:e11d jsr clrch:jsr casetdev:ldy #0
  95. 780 e11 sty flagff:ldy status:e09i bne e9i
  96. 785 jsr iecin:ldy flagff:sta dbuf,y:cmp #0:beq e11a1:iny:cpy #44:bcc e11
  97. 786 bcs e11a:e09o bne e9o
  98. 790 e11a1 lda #13:sta dbuf,y:iny:e11a sty flagff
  99. 791 jsr untalk:jsr catckout:ldy #255:e11b iny:cpy flagff:beq e11c
  100. 792 lda dbuf,y:jsr bsout:jmp e11b
  101. 793 e11c cpy #44:beq e11d
  102. 799 jsr clrch:jsr getstp:beq e9o
  103. 800 jsr $ffe4:beq e9a:cmp #" ":bne e9a
  104. 805 e9b jsr $ffe4:beq e9b
  105. 810 e9a ldy #2:jmp e10
  106. 815 e9i jsr untalk:jmp e9
  107. 820 e9o jsr clrch:e9 lda flagfe:sta devadr:lda #$60:sta secadr:jsr $f642
  108. 821 lda #14:jmp close
  109. 822 catckout ldx flagfc:cpx #3:beq catret
  110. 823 ldx lfn:jsr ckout:catret rts
  111. 830 casetdev lda flagfe:jsr talk:lda #$60:jmp sectalk
  112. 870 ;:;******** collect:;
  113. 880 collect jsr e12:lda #"v":ldy #0:sta ($bb),y
  114. 890 dbout =*:;jsr fdos :lda #0:sta status:lda devadr:jsr listen
  115. 892 lda #$6f:jsr $ff93:lda status:bpl dbo1:ldx #5:jmp $a437
  116. 893 dbo1 jmp $f3f6
  117. 920 ;:;******** header (disk formatieren):;
  118. 930 header lda #"n":pha:ldy #64+4:jsr e12l+2:jmp hesc
  119. 950 ;:;******** scratch:;
  120. 960 scratch lda #"s":pha:jsr e12:hesc pla:ldy #0:sta ($bb),y
  121. 970 sc1 bit $9d:bpl e21b:lda #<scstr:ldy #>scstr:jsr strout
  122. 980 jsr $e112:cmp #"y":bne e21a
  123. 990 jsr dbout:jsr getdsstr:lda #13:jsr bsout:jsr bsout
  124. 1000 ldy #0:e21 lda (stradr),y:jsr bsout
  125. 1010 iny:cpy strlen:bne e21
  126. 1020 e21a lda #13:jmp bsout:e21b rts
  127. 1030 ;:;******** ds$ generieren:;
  128. 1040 getdsstr lda #40:jsr getplace
  129. 1050 lda diskadr:jsr talk:lda #$6f:jsr sectalk
  130. 1060 ldy #0:e22 jsr iecin:cmp #13:beq ds01
  131. 1070 sta (stradr),y:iny:cpy #40:bne e22
  132. 1080 ds01 sty strlen:jmp untalk
  133. 1090 dsstr jsr getdsstr:jmp $b4ca
  134. 1100 dsfac jsr getdsstr:ldy #0:lda (stradr),y:and #15
  135. 1110 asl:sta intadr:asl:asl:adc intadr:sta intadr:iny:lda (stradr),y
  136. 1120 and #15:clc:adc intadr:tay:lda #0:jmp $b395
  137. 1280 ;:;******** rename:;
  138. 1290 rename lda #"r":.byt $2c
  139. 1300 copy   lda #"c":.byt $2c
  140. 1310 backup lda #"d"
  141. 1320 pha:jsr e23:pla:ldy #0:sta ($bb),y:jmp dbout
  142. 1330 ;:;******** disk:;
  143. 1340 disk bcc disk1:ldy #8:jsr e12l+2
  144. 1342 jmp dbout
  145. 1344 disk1 jsr getbyt:stx diskadr:rts
  146. 1350 ;:;******** run:;
  147. 1360 run cmp #$22;hochkomma:beq e50
  148. 1365 lda flag:and #8:beq e50a:jmp $c003
  149. 1367 e50a jsr chr(NULL)t:jmp $a871
  150. 1370 e50 sei:ldy #5:sty $c6
  151. 1380 e52 lda runstr-1,y:sta $0276,y:dey:bne e52:cli:jmp dload
  152. 1390 ;:;******** append:;
  153. 1400 append jsr e12l:lda #0;load-flag:sta flag0a:sta secadr
  154. 1410 lda varstart:sec:sbc #2:tax:ldy varstart+1
  155. 1420 bcs e53:iny:e53 lda #0:jmp $e175
  156. 1430 ;:;******** merge:;
  157. 1440 merge jsr e12l
  158. 1450 jsr $f5af;"searching for name":lda #$60:sta secadr
  159. 1460 jsr $f3d5:lda devadr:jsr talk
  160. 1470 lda secadr:jsr sectalk:jsr mebytin
  161. 1490 jsr mebytin:bit $9d:bpl mv0302:lda #<merstr:ldy #>merstr:jsr strout
  162. 1501 mv0302 jsr mebytin:sta flagfd:jsr mebytin:ora flagfd:bne mv01
  163. 1502 jmp meend
  164. 1505 mv01 jsr mebytin:sta intadr:jsr mebytin:sta intadr+1
  165. 1510 lda #5:sta flagfc
  166. 1520 mebyte jsr mebytin:ldy flagfc:sta $01fb,y:cmp #0:beq meein
  167. 1530 iny:sty flagfc:cpy #85:bcc mebyte:bcs mefdata
  168. 1545 meein jsr $a613:lda varstart:sta $5a:clc:adc flagfc
  169. 1547 sta $58:tax
  170. 1550 lda varstart+1:sta $5b:adc #0:sta $59
  171. 1555 cmp basend+1:bcc me4:bne memem:cpx basend:bcs memem
  172. 1560 me4 jsr $a3bf:ldy #0:lda #1:sta (flag5f),y:iny:sta (flag5f),y:iny
  173. 1570 lda intadr:sta (flag5f),y:iny:lda intadr+1:sta (flag5f),y:iny
  174. 1575 ldx #5:me5 lda $01fb,x:sta (flag5f),y:iny:inx:cpx flagfc:bcc me5
  175. 1580 lda #0:sta (flag5f),y:jsr $a533:lda flag22:clc
  176. 1585 adc #2:sta varstart:lda flag22+1:adc #0:sta varstart+1
  177. 1590 jsr getstp:beq mebreak:jmp mv0302
  178. 1600 mefdata lda #24:.byt $2c
  179. 1601 enstrtl lda #$17:.byt $2c
  180. 1605 memem   lda #16:.byt $2c
  181. 1610 mebreak lda #30:.byt $2c
  182. 1620 fnfound lda #4 :.byt $2c
  183. 1630 meend   lda #128
  184. 1640 sta flagc8
  185. 1645 lda #255-64:jsr clrfla
  186. 1650 jsr untalk:jsr $f642:jsr $a533:jsr $a663:ldx flagc8:jmp $a437
  187. 1800 mebytin lda #$fd:and status:sta status
  188. 1821 me2 jsr iecin:tax:lda status:lsr:lsr:bcc meinrts:pla:pla:jmp mefdata
  189. 1822 meinrts txa:rts
  190. 2000 ;:;******** enter:;
  191. 2010 enter jsr e12l:enexe jsr $f5af;'searching for filename'
  192. 2032 lda #0:sta status:lda devadr:jsr listen:lda #$f2:jsr seclisten
  193. 2033 lda status:bpl enm1:jmp $f707
  194. 2034 enm1 lda lenfnam:beq enm2:ldy #0:enm3 lda (zeifnam),y:jsr iecout
  195. 2035 iny:cpy lenfnam:bne enm3:enm2 ldx #3:enm4 lda prgstr,x:jsr iecout
  196. 2036 dex:bpl enm4:jsr $f654
  197. 2050 lda devadr:sta flagc8:lda #64:jsr setfla
  198. 2060 bit $9d:bpl env0302:lda #<enstr:ldy #>enstr:jsr strout
  199. 2080 env0302 .if speed:lda #0:sta $0298
  200. 2081 jsr $ffe1
  201. 2082 beq enend1:lda #0:sta status:lda flagc8:sta devadr
  202. 2085 jsr talk:lda #$62:sta secadr:jsr sectalk
  203. 2090 lda status:bne enend1
  204. 2100 ldy #0:en1 jsr mebytin:cmp #13:beq enzend:sta $0200,y
  205. 2110 iny:cpy #89:bcc en1:jmp enstrtl
  206. 2130 enzend jsr untalk:lda #0:sta $0200,y:ldx #$ff
  207. 2140 ldy #1:lda status:bne enend2
  208. 2150 .if speed:lda #3:sta $0298
  209. 2160 jmp meret
  210. 2200 enend1 lda #0:sta $0200
  211. 2210 enend2 lda #255-64:jsr clrfla
  212. 2220 jsr untalk:lda flagc8:sta devadr:lda #$62:sta secadr
  213. 2225 lda #$76:ldy #$a3:jsr $ab1e
  214. 2230 jsr $f642:pla:pla:ldx #$ff:ldy #1:jmp meret
  215. 3000 type jsr e12l:lda $b7:bne type1
  216. 3010 ldx #8:jmp $a437
  217. 3020 type1 lda #0:sta $b9:jsr $f3d5
  218. 3030 lda status:bne typee
  219. 3040 lda $ba:jsr talk:lda #$f0:jsr sectalk
  220. 3050 type2 jsr $ee13:ldx status:jsr $ffd2
  221. 3060 txa:beq type2
  222. 3070 jsr unlisten:jsr $f646:typee rts
  223.